package cn.wolfcode.luowowo.redis.service;

import cn.wolfcode.luowowo.redis.domian.StrategyStatisVO;

import java.util.List;

public interface IStrategyStatisVoRedisService {
    /**
     * 进入攻略页面就在redis里增加阅读数+1
     * @param id
     * @param num
     */
    void viewnumIncrease(Long id , int num);

    /**
     * 查询阅读数
     * @param id
     * @return
     */
    StrategyStatisVO getStrategyStatisVo(Long id);

    /**
     * 评论完就将评论数+1
     * @param detailId
     * @param num
     */
    int replynumIncrease(Long detailId, int num);

    Boolean favor(Long sid, Long uid);
    Boolean getbyUserIdAndSid(Long sid, Long uid);

    /**
     * 攻略点赞(顶)
     * @param sid  攻略id
     * @param uid  uid
     * @return  true表示第一次顶,false表示今天已经点赞过  一天只能点赞一次
     */
    Boolean thumbup(Long sid, Long uid);

    /**
     * 数据初始化,将数据库的数据同步到redis中
     * @param vo
     */
    void setStrategyStatisVo(StrategyStatisVO vo);

    /**
     * 判断是否存在攻略key
     * @param sid 攻略id
     * @return  true 表示存在,false表示不存在
     */
    boolean isExistStrategyVoKey(Long sid);

    /**
     * 获取redis中所有的攻略vo list
     * @param voKey
     * @return
     */
    List<StrategyStatisVO> listStrategyStatisVo(String voKey);

    /**热攻略热门排行加分
     *
     * @param sid 攻略i
     * @param num  分数
     */
    void addHotScore(Long sid, int num);

    /**
     * 查询热门攻略推荐排行榜前10
     * @return
     */
    List<StrategyStatisVO> listHotVoTop10();

    /**
     * 国内外排行榜点赞加分
     * @param sid
     * @param num
     */
    void addIsAbroadCommend(Long sid, int num);

    /**
     * 查询前缀为国内外key的值
     * @return
     */
    List<StrategyStatisVO> listIsAbroadCommendVo();

    /**
     * 判断是否存在Zkey
     * @param ZKey
     * @param sid
     * @return true 存在
     */
    boolean isZsetStatisVoExeist(String ZKey, Long sid);
}
